/*
 * Copyright (c) 2012, Texas Instruments Incorporated
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * *  Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * *  Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * *  Neither the name of Texas Instruments Incorporated nor the names of
 *    its contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
/*
 *  ======== SyncSem.xs ========
 *
 */

var Semaphore = null;

/*
 *  ======== module$use ========
 */
function module$use()
{
    Semaphore = xdc.useModule("ti.sysbios.knl.Semaphore");
}

/*
 *  ======== instance$static$init ========
 */
function instance$static$init(obj, params)
{
    if (params.sem) {
        obj.userSem = true;
        obj.sem = params.sem;
    }
    else {
        obj.userSem = false;
        var semParams = new Semaphore.Params();
        semParams.mode = Semaphore.Mode_BINARY;
        obj.sem = Semaphore.create(0, semParams);
    }

}

/*
 *  ======== viewInitBasic ========
 *  Initialize the 'Basic' SyncSem instance view.
 */

function viewInitBasic(view, obj)
{
    view.label = Program.getShortName(obj.$label);

    view.SemaphoreHandle = "0x" + Number(obj.sem).toString(16);

    try {
        SemView = Program.scanHandleView('ti.sysbios.knl.Semaphore', obj.sem,
                'Basic');
    }
    catch (e) {
        print("Error: could not scan view of Semaphore Handle: " +
                e.toString());
    }

    var len = SemView.pendedTasks.length;

    view.pendedTasks = SemView.pendedTasks;
}
